package ec.ups.edu.proyecto.controlador;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.inject.Inject;

import ec.ups.edu.proyecto.datos.PersonaDAO;
import ec.ups.edu.proyecto.modelo.Persona;


@ManagedBean
public class ReservaBean {

	@Inject 
	private Logger log;
	
	@Inject
	private PersonaDAO pDAO;
	
	
	/**
	 * Conjunto de Bean Propierties, que permiten enlazar la pagina JSF con la clase java
	 * JavaBeans
	 */	
	private int edadminima;		//Parametro de filtro de edadminima	

	private Persona newPersona;		//Entidad Persona, que relaciona el objeto a manipular
	
	private List<Persona> listado;	//Coleccion de Entidades Persona, util para listado
	
	/**
	 * Método que se ejecuta posterior a la creación(instancia) del JavaBean 
	 */
	@PostConstruct
	public void init(){
		edadminima = 0;
		newPersona = new Persona();
		loadPersonas();
	}
	
	public List<Persona> getListado() {
		return listado;
	}
	
	public int getEdadminima() {
		return edadminima;
	}

	public void setEdadminima(int edadminima) {
		this.edadminima = edadminima;
	}

	public void setListado(List<Persona> listado) {
		this.listado = listado;
	}
	
	public Persona getNewPersona() {
		return newPersona;
	}
	public void setNewPersona(Persona newPersona) {
		this.newPersona = newPersona;
	}
	
	/**
	 * Precarga de coleccion de entidades desde BD segun logica deseada, 
	 * enlazandose al Objeto de Acceso a Datos PersonaDAO
	 */
	public void loadPersonas(){
		listado = pDAO.getPersonas(edadminima);
	}
	
	/**
	 * ActionController, procedimiento llamado desde vista, atado al boton guardar del JSF
	 * @return		Regla de navegacion,
	 */
	public String guardar(){
		log.log(Level.INFO, "[PROYECTOEJEMPLO] Graduando Persona en sistema");
		pDAO.insert(newPersona);
		
		init();
		return "listado-personas";
	}
	
	/**
	 * ActionController, procedimiento llamado desde vista, atado al boton buscar del JSF
	 * @return		Regla de navegación
	 */
	public String buscar(){	
		log.log(Level.INFO, "[PROYECTOEJEMPLO] Consultando registros Persona con edad minima " + this.getEdadminima());
		loadPersonas();
		return null;
	}
	
}

